﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Kaesoft.Hospedaje.Entities
{
    #region Seguridades
    public class OpcionValidator : EntityValidator
    {
        public OpcionValidator(Opcion entity)
            : base(entity)
        {

        }
    }

    public class PerfilValidator : EntityValidator
    {
        public PerfilValidator(Perfil entity)
            : base(entity)
        {
            AddPropertyRule("nombre", ValidationRules.StringHasSomething, "Nombre es un campo mandatorio", ErrorType.Required);
        }
    }

    public class PerfilOpcionValidator : EntityValidator
    {
        public PerfilOpcionValidator(PerfilOpcion entity)
            : base(entity)
        {

        }
    }

    public class UsuarioValidator : EntityValidator
    {
        public UsuarioValidator(Usuario entity)
            : base(entity)
        {
            AddPropertyRule("usuario1", ValidationRules.IsTextNumber, "Usuario es un campo alfanumérico", ErrorType.Required);
            AddPropertyRule("usuario1", ValidationRules.StringHasSomething, "Usuario es un campo mandatorio", ErrorType.Required);
            AddPropertyRule("identificacion", ValidationRules.IsNumber, "Identificación es un campo numérico", ErrorType.Required);
            AddPropertyRule("identificacion", ValidationRules.StringHasSomething, "Identificación es un campo mandatorio", ErrorType.Required);
            AddPropertyRule("nombre", ValidationRules.IsText, "Nombre es un campo alfabético", ErrorType.Required);
            AddPropertyRule("nombre", ValidationRules.StringHasSomething, "Nombre es un campo mandatorio", ErrorType.Required);
            AddPropertyRule("idPerfil", ValidationRules.IsGuidNotEmpty, "Perfil es un campo mandatorio", ErrorType.Required);
        }
    }

    public class OperacionValidator : EntityValidator
    {
        public OperacionValidator(Operacion entity)
            : base(entity)
        {

        }
    }

    public class PerfilOpcionOperacionValidator : EntityValidator
    {
        public PerfilOpcionOperacionValidator(PerfilOpcionOperacion entity)
            : base(entity)
        {

        }
    }

    public class UsuarioPerfilValidator : EntityValidator
    {
        public UsuarioPerfilValidator(UsuarioPerfil entity)
            : base(entity)
        {

        }
    }
    #endregion

    #region Facturacion
    public class ParametroValidator : EntityValidator
    {
        public ParametroValidator(Parametro entity)
            : base(entity)
        {
            AddPropertyRule("nombre", ValidationRules.StringHasSomething, "Nombre del parámetro es un campo mandatorio", ErrorType.Required);
            AddPropertyRule("descripcion", ValidationRules.StringHasSomething, "Descripción del parámetro es un campo mandatorio", ErrorType.Required);
            AddPropertyRule("valor", ValidationRules.StringHasSomething, "Valor del parámetro es un campo mandatorio", ErrorType.Required);
        }
    }

    public class EstructuraCatalogoValidator : EntityValidator
    {
        public EstructuraCatalogoValidator(EstructuraCatalogo entity)
            : base(entity)
        {
            AddPropertyRule("codigo", ValidationRules.IsPositiveInt, "Código del tipo es un campo mandatorio", ErrorType.Required);
            AddPropertyRule("codigoPadre", ValidationRules.IsIntNotNull, "Código del padre es un campo mandatorio, si no tiene padre ingrese 0", ErrorType.Required);
            AddPropertyRule("nombre", ValidationRules.StringHasSomething, "Nombre es un campo mandatorio", ErrorType.Required);
            AddPropertyRule("descripcion", ValidationRules.StringHasSomething, "Descripción es un campo mandatorio", ErrorType.Required);
        }
    }

    public class CatalogoValidator : EntityValidator
    {
        public CatalogoValidator(Catalogo entity)
            : base(entity)
        {
            AddPropertyRule("codigoCadena", ValidationRules.StringHasSomething, "Código del catálogo es un campo mandatorio", ErrorType.Required);
            AddPropertyRule("nombre", ValidationRules.StringHasSomething, "Nombre del catálogo es un campo mandatorio", ErrorType.Required);
            AddPropertyRule("descripcion", ValidationRules.StringHasSomething, "Descripción del catálogo es un campo mandatorio", ErrorType.Required);
        }
    }

    public class OpcionOperacionValidator : EntityValidator
    {
        public OpcionOperacionValidator(OpcionOperacion entity)
            : base(entity)
        {

        }
    }

    public class HabitacionValidator : EntityValidator
    {
        public HabitacionValidator(Habitacion entity)
            : base(entity)
        {

        }
    }

    public class PersonaValidator : EntityValidator
    {
        public PersonaValidator(Persona entity)
            : base(entity)
        {

        }
    }

    public class ServicioValidator : EntityValidator
    {
        public ServicioValidator(Servicio entity)
            : base(entity)
        {

        }
    }

    public class ReservacionValidator : EntityValidator
    {
        public ReservacionValidator(Reservacion entity)
            : base(entity)
        {

        }
    }

    public class EmpresaValidator : EntityValidator
    {
        public EmpresaValidator(Empresa entity)
            : base(entity)
        {

        }
    }

    public class ServicioHabitacionValidator : EntityValidator
    {
        public ServicioHabitacionValidator(ServicioHabitacion entity)
            : base(entity)
        {

        }
    }
    #endregion
}